import { getApiList, getDictionaryTypeList } from '../../../../service'

export default {
  labelWidth: '94px',
  gap: '12px',
  groupTheme: 'collapse',
  groups: [
    {
      title: '组件配置',
      columnsCount: 2,
      items: [
        {
          type: 'input',
          label: '标识',
          prop: 'componentId',
          readonly: true
        },
        {
          label: '绑定方法',
          prop: 'bindMethod',
          type: 'radio',
          config: {
            optionsValueKey: 'value',
            optionsLabelKey: 'label',
            returnObject: false,
            options: [
              {
                label: '字典',
                value: 1
              },
              {
                label: '输入',
                value: 2
              }
            ]
          }
        },
        {
          type: 'select',
          label: '关联字典',
          prop: 'propertyType',
          config: {
            optionsValueKey: 'id',
            optionsLabelKey: 'name',
            returnObject: false,
            options() {
              return getDictionaryTypeList()
            }
          },
          rules: [{ required: true, message: '请选择绑定值类型', trigger: 'change' }],
          exist(value) {
            if (value.bindMethod === 1) {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'bindSelect',
          label: '绑定值',
          prop: 'propertyName',
          config: {
            bindProp: 'propertyType',
            optionsValueKey: 'tagValue',
            optionsLabelKey: 'dicTagName',
            returnObject: false,
          },
          rules: [{ required: true, message: '请选择绑定值', trigger: 'change' }],
          exist(value) {
            if (value.bindMethod === 1) {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '绑定值',
          prop: 'propertyName',
          rules: [{ required: true, message: '请输入绑定值', trigger: 'change' }],
          exist(value) {
            if (value.bindMethod === 2) {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '名称',
          prop: 'name',
          rules: [{ required: true, message: '请输入控件名称', trigger: 'blur' }]
        },
        {
          type: 'bindLabel',
          label: '标签',
          prop: 'label',
          readonly: true,
          config: {
            bindProp: 'propertyName',
            subordinateProp: 'propertyType'
          },
          exist(value) {
            if (value.bindMethod === 1) {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '标签',
          prop: 'label',
          exist(value) {
            if (value.bindMethod === 2) {
              return true
            } else {
              return false
            }
          }
        },
        // {
        //   type: 'checkbox',
        //   label: '',
        //   labelWidth: '0',
        //   config: {
        //     label: '是否展示树型下拉框',
        //     position: 'right'
        //   },
        //   prop: 'isTreeSelect'
        // },
        // {
        //   type: 'checkbox',
        //   label: '返回对象',
        //   prop: 'returnObject',
        //   config: {
        //     position: 'right'
        //   }
        // },
        {
          type: 'select',
          label: '类型',
          prop: 'selectAppType',
          config: {
            required: true,
            optionsValueKey: 'value',
            optionsLabelKey: 'label',
            returnObject: false,
            options: [{ label: '传统下拉框', value: 'select' }, { label: '手机选择器', value: 'picker' }]
          },
          rules: [{ required: true, message: '请选择下拉框类型', trigger: 'change' }],
          exist() {
            if (this.$attrs.device === 'APP') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'select',
          label: '单/多选',
          prop: 'selectType',
          config: {
            required: true,
            optionsValueKey: 'value',
            optionsLabelKey: 'label',
            returnObject: false,
            options: [{ label: '单选', value: 'single' }, { label: '多选', value: 'multiple' }]
          },
          rules: [{ required: true, message: '请选择下拉框类型', trigger: 'change' }],
          exist() {
            if (this.$attrs.device === 'APP') {
              return false
            } else {
              return true
            }
          }
        },
        {
          type: 'input',
          label: '提示语',
          prop: 'placeholder'
        },
        {
          type: 'select',
          label: '',
          labelWidth: '0',
          prop: 'connectType',
          config: {
            label: '选项获取方式',
            required: true,
            optionsValueKey: 'value',
            optionsLabelKey: 'label',
            returnObject: false,
            options: [{ label: '数据接口获取', value: 'interface' }, { label: '数据字典获取', value: 'dictionary' }]
          },
          rules: [{ required: true, message: '请选择选项获取方式', trigger: 'change' }],
          exist(value) {
            if (value.selectAppType === 'picker' && this.$attrs.device === 'APP') {
              return false
            } else {
              return true
            }
          }
        },
        {
          type: 'select',
          label: '',
          labelWidth: '0',
          prop: 'loadType',
          config: {
            label: '数据加载方式',
            required: true,
            optionsValueKey: 'value',
            optionsLabelKey: 'label',
            returnObject: false,
            options: [{ label: '直接加载', value: 'sync' }, { label: '搜索后加载', value: 'async' }]
          },
          rules: [{ required: true, message: '请选择数据加载方式', trigger: 'change' }],
          exist(value) {
            if (value.connectType === 'interface') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'select',
          label: '数据字典',
          prop: 'dataDictionaryId',
          config: {
            optionsValueKey: 'id',
            optionsLabelKey: 'name',
            returnObject: false,
            options() {
              return getDictionaryTypeList()
            }
          },
          exist(value) {
            if (value.connectType === 'dictionary') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'select',
          label: '数据接口',
          prop: 'dataInterfaceId',
          config: {
            optionsValueKey: 'name',
            optionsLabelKey: 'name',
            returnObject: false,
            options() {
              return getApiList()
            }
          },
          rules: [{ required: true, message: '请选择数据接口', trigger: 'change' }],
          exist(value) {
            if (value.connectType === 'interface') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '',
          labelWidth: '0',
          config: {
            label: '显示值字段',
            required: true
          },
          prop: 'optionsLabelKey',
          rules: [{ required: true, message: '请输入显示值字段', trigger: 'blur' }],
          exist(value) {
            if (value.connectType === 'interface') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '',
          labelWidth: '0',
          config: {
            label: '绑定值字段',
            required: true
          },
          prop: 'optionsValueKey',
          rules: [{ required: true, message: '请输入绑定值字段', trigger: 'blur' }],
          exist(value) {
            if (value.connectType === 'interface') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '',
          labelWidth: '0',
          config: {
            label: '搜索参数名'
          },
          prop: 'queryKey',
          exist(value) {
            if (value.connectType === 'interface' && value.loadType === 'async') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'input',
          label: '',
          labelWidth: '0',
          config: {
            label: '接口参数配置',
          },
          prop: 'interfaceParams',
          exist(value) {
            if (value.connectType === 'interface') {
              return true
            } else {
              return false
            }
          }
        },
        {
          type: 'button',
          label: '',
          labelWidth: '0',
          config: {
            label: '查询接口',
            position: 'right'
          },
          prop: 'searchClick',
          exist(value) {
            if (value.connectType === 'interface') {
              return true
            } else {
              return false
            }
          }
        },
        // {
        //   type: 'input',
        //   label: '',
        //   labelWidth: '0',
        //   config: {
        //     label: '查询限制条数'
        //   },
        //   prop: 'queryLimit',
        //   exist(value) {
        //     if (value.connectType === 'interface' && value.loadType === 'async') {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'checkbox',
        //   label: '关联查询',
        //   prop: 'linkSearch',
        //   config: {
        //     position: 'right'
        //   },
        //   exist(value) {
        //     if (value.connectType === 'interface') {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'input',
        //   label: '',
        //   labelWidth: '0',
        //   config: {
        //     label: '关联查询表达式',
        //     required: true
        //   },
        //   prop: 'linkSearchEx',
        //   rules: [{ required: true, message: '请输入关联查询表达式', trigger: 'blur' }],
        //   exist(value) {
        //     if (value.linkSearch && value.connectType === 'interface') {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'input',
        //   label: '',
        //   labelWidth: '0',
        //   config: {
        //     label: '关联查询参数名',
        //     required: true
        //   },
        //   prop: 'linkSearchQueryKey',
        //   rules: [{ required: true, message: '请输入关联查询参数名', trigger: 'blur' }],
        //   exist(value) {
        //     if (value.linkSearch && value.connectType === 'interface') {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'select',
        //   label: '',
        //   labelWidth: '0',
        //   prop: 'filterdataInterfaceId',
        //   config: {
        //     label: '过滤的数据接口',
        //     required: true,
        //     optionsValueKey: 'id',
        //     optionsLabelKey: 'name',
        //     returnObject: false,
        //     options() {
        //       return getInterfaceListAll()
        //     }
        //   },
        //   rules: [{ required: true, message: '请选择过滤的数据接口', trigger: 'change' }],
        //   exist(value) {
        //     if (value.isFilter) {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'select',
        //   label: '类型',
        //   prop: 'type',
        //   config: {
        //     optionsValueKey: 'value',
        //     optionsLabelKey: 'label',
        //     returnObject: false,
        //     options: [{ label: '请求参数', value: 'param' }, { label: '前端过滤', value: 'normal' }]
        //   },
        //   rules: [{ required: true, message: '请选择单选样式', trigger: 'change' }],
        //   exist(value) {
        //     if (value.isFilter) {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'input',
        //   label: '',
        //   labelWidth: '0',
        //   prop: 'paramName',
        //   config: {
        //     label: '请求参数名',
        //     placeholder: '多个参数名用\',\'分隔',
        //     required: true
        //   },
        //   exist(value) {
        //     if (value.type === 'param' && value.isFilter) {
        //       return true
        //     } else {
        //       return false
        //     }
        //   },
        //   rules: [{ required: true, message: '请选择类型', trigger: 'blur' }]
        // },
        // {
        //   type: 'input',
        //   label: '列表字段',
        //   prop: 'listKey',
        //   exist(value) {
        //     if (value.type === 'normal' && value.isFilter) {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },
        // {
        //   type: 'input',
        //   label: '过滤字段',
        //   prop: 'filterKeys',
        //   config: {
        //     placeholder: '多个过滤字段用\',\'分隔'
        //   },
        //   rules: [{ required: true, message: '请输入过滤字段', trigger: 'blur' }],
        //   exist(value) {
        //     if (value.type === 'normal' && value.isFilter) {
        //       return true
        //     } else {
        //       return false
        //     }
        //   }
        // },

        {
          type: 'commonConfigEditor',
          config: {
            marginLeft: -80,
            lineNumbers: 'on',
            title: '是否必填',
            position: 'right'
          },
          label: '是否必填',
          prop: 'required'
        },
        {
          type: 'commonConfigEditor',
          config: {
            marginLeft: -80,
            lineNumbers: 'on',
            title: '是否可见',
            position: 'right'
          },
          label: '是否可见',
          prop: 'isShowExp'
        },
        {
          type: 'commonConfigEditor',
          config: {
            marginLeft: -80,
            lineNumbers: 'on',
            title: '是否存在',
            position: 'right'
          },
          label: '是否存在',
          prop: 'isExistExp'
        },
        {
          type: 'commonConfigEditor',
          config: {
            marginLeft: -80,
            height: '300px',
            lineNumbers: 'on',
            title: '是否只读',
            position: 'right'
          },
          label: '是否只读',
          prop: 'isReadonlyExp'
        }
      ]
    }, {
      title: '组件事件',
      columnsCount: 2,
      items: [
        {
          type: 'monacoEditor',
          label: '',
          labelWidth: '0',
          config: {
            label: 'change',
            height: '300px',
            lineNumbers: 'on',
            position: 'right',
            haveIcon: true
          },
          prop: 'changeCb'
        }/* , {
          type: 'monacoEditor',
          label: '',
          labelWidth: '0',
          config: {
            label: 'focus',
            height: '300px',
            lineNumbers: 'on',
            position: 'right',
            haveIcon: true
          },
          prop: 'focusCb'
          // exist() {
          //   return this.$attrs.device !== 'APP'
          // }
        }, {
          type: 'monacoEditor',
          label: '',
          labelWidth: '0',
          config: {
            label: 'blur',
            height: '300px',
            lineNumbers: 'on',
            position: 'right',
            haveIcon: true
          },
          prop: 'blurCb'
          // exist() {
          //   return this.$attrs.device !== 'APP'
          // }
        } */
      ]
    }
  ]
}
